package com.jingjiu.homeservicesapi.enums;

import lombok.Getter;

/**
 * 该文件定义了应用程序中使用的所有结果枚举。
 */
@Getter
public enum ResultEnum {
    /**
     * 表示操作成功的结果。
     */
    SUCCESS(200, "SUCCESS"),

    FAIL(-200, "FAIL"),
//------------------ 400系列表示业务逻辑错误  ---------------------


    /**
     * 表示参数非法的结果。
     */
    ILLEGAL_VALUE(4000, "参数异常"),

    /**
     * 表示未认证的结果。
     */
    UNAUTHORIZED(4001, "未认证"),


    /**
     * 表示参数校验失败的结果。
     */
    PARAMETER_ERROR(4002, "参数校验失败"),

    /**
     * 表示业务处理失败的结果。
     */
    BUSINESS_ERROR(4003, "业务处理失败"),


    /**
     * 表示未授权的结果。
     */
    FORBIDDEN(4004, "未授权"),

    /**
     * 表示会话已过期的结果。
     */
    TOKEN_ERROR(4005, "Token不存在"),


    /**
     * 表示协议不正确，请查看文档的结果。
     */
    PROTOCOL_ERROR(4006, "协议不正确，请查看文档"),
    /**
     * 表示请勿重复提交的结果。
     */
    DUPLICATE_SUBMISSION(4007, "请勿重复提交"),

    /**
     * 表示角色暂未加入的结果。
     */
    ROLE_NOT_ADDED(4008, "角色暂未加入"),

    ILLEGAL_REQUEST(4009, "非法请求 已记录IP"),

    TOKEN_EXPIRED(4010, "Token已过期"),

    /**
     * 表示已经被使用的结果。
     */
    USE(4101, "已经被使用"),

    /**
     * 表示会员已过期的结果。
     */
    EXPIRE(4102, "会员已过期"),

    /**
     * 表示没有购买的结果。
     */
    NO_PURCHASE(4103, "没有购买"),

    /**
     * 表示手机号已经存在的结果。
     */
    PHONE_ALREADY_EXISTS(4104, "手机号已经存在"),

    /**
     * 表示手机号格式不正确的结果。
     */
    PHONE_NUMBER_FORMAT_INVALID(4105, "手机号格式不正确"),


    /**
     * 表示上级不能为自己。
     */
    SUPERIORID_SAME_AS_USERID(4106, "上级不能为自己"),

    /**
     * 表示上级不能为下级。
     */
    SUPERIORID_SAME_AS_SUBORDINATE(4107, "上级不能为下级"),
    /**
     * 表示请 60 秒后再提交的结果。
     */
    PLEASE_TRY_AGAIN_AFTER_60_SECONDS(4108, "请 60 秒后再提交"),
    /**
     * 查询异常
     */
    QUERY_EXCEPTION(4109, "查询异常"),
    /**
     * 身份信息认证失败
     */
    INFORMATION_AUTHENTICATION_FAILED(4001, "身份信息认证失败"),
    /**
     * 请求头参数错误
     */
    REQUEST_HEADER_PARAMETER_ERROR(4201, "请求头参数错误"),
    /**
     * 验签失败
     */
    SIGNATURE_VERIFICATION_FAILED(4202, "验签失败"),
    /**
     * 缺少签名
     */
    MISSING_SIGNATURE(4203, "缺少签名"),
    /**
     * 请求已过期
     */
    REQUEST_EXPIRED(4204, "请求已过期"),
//------------------ 5000系列表示服务器错误 ---------------------
    FILE_UPLOAD_FAIL(4205, "文件上传失败"),
    /**
     * 表示操作失败的结果。
     */
    FAILURE(5000, "出错了，请联系管理员！"),

    /**
     * 表示系统异常的结果。
     */
    SYSTEM_EXCEPTION(5001, "系统出错了！"),

    /**
     * 表示设备不存在的结果。
     */
    DEVICE_NOT_FOUND(5003, "设备不存在！"),
    /**
     * 七牛云-设备不存在的结果。
     */
    NIULINK_DEVICE_NOT_FOUND(5003, "设备不存在！"),

    /**
     * 表示设备SN不相同的结果。
     */
    SN_MISMATCH(5003, "设备SN异常！"),

    /**
     * 表示设备已删除的结果。
     */
    DEVICE_DELETED(5004, "设备已删除！"),

    /**
     * 表示设备已被绑定的结果。
     */
    USER_ID_ALREADY_SET(5004, "设备已被绑定！"),
    /**
     * 设备详情不存在
     */
    DEVICE_DETAILS_IS_NOT_EXIST(5005, "设备详情不存在"),

    /**
     * 传入设备为空
     */
    INCOMING_DEVICE_IS_EMPTY(5003, "传入设备为空"),
    /**
     * 分配失败
     */
    ALLOCATION_FAILURE(5006, "分配失败"),
    /**
     * 设备更新失败,ID:
     */
    DEVICE_UPDATE_FAILED(5006, "设备更新失败,ID:"),
    /**
     * 设备规则不存在
     */
    DEVICE_RULE_IS_NOT_EXIST(5003, "设备规则不存在"),
    /**
     * 设备规则参数不存在
     */
    DEVICE_RULE_PARAM_IS_NOT_EXIST(5003, "设备规则不存在"),
    /**
     * 修改失败
     */
    UPDATE_ERROR(5001, "修改失败"),
    /**
     * 保存失败
     */
    SAVE_ERROR(5001, "保存失败"),

    /**
     * 数据不存在
     */
    DATA_NOT_EXIST(5004, "数据不存在"),
    /**
     * 金额错误
     */
    AMOUNT_ERROR(5005,"金额错误"),

    /**
     * 订单不存在
     */
    ORDER_NOT_EXIST(5006, "订单不存在"),

    /**
     * 未找到对应合同信息
     */
    CONTRACT_NOT_EXIST(6000, "未找到对应合同信息"),
    //------------------ 6000系列表示olink-mini错误 ---------------------

    /**
     * 表示查询用户的结果。
     */
    USER_DOES_NOT_EXIST(6000, "用户不存在 或者 密码错误！"),

    /**
     * 表示查询用户的结果。
     */
    USER_INFO_NOT_EXIST(6000, "用户不存在"),

    USER_PASSWORD_NOT_RIGHT(6001, "密码错误"),
    /**
     * 表示用户已经注册的结果。
     */
    USER_ALREADY_REGISTERED(6002, "用户已经注册！"),

    /**
     * 表示验证码失效的结果。
     */
    VERIFICATION_CODE_INVALID(6003, "验证码失效！"),

    /**
     * 表示验证码错误的结果。
     */
    VERIFICATION_CODE_ERROR(6004, "验证码错误！"),

    /**
     * 表示修改密码失败结果。
     */
    CHANGE_PASSWORD(6004, "修改密码失败！"),

    /**
     * 表示注册失败结果。
     */
    LOGIN_HAS_FAILED(6005, "注册失败！"),

    /**
     * 表示旧密码是否正确结果。
     */
    OLD_PASSWORD_INCORRECT(6006, "旧密码错误，请检查！"),

    /**
     * 表示提现金额小于账户余额结果。
     */
    ACCOUNT_BALANCE_INSUFFICIENT(6006, "账户余额不足！"),

    /**
     * 表示邀请码查询的上级不存在结果。
     */
    PROMOTION_CODE_USER_ERROR(6007, "邀请人不存在，请检查邀请码！"),

    /**
     * 表示邀请码查询的上级已被删除结果。
     */
    INVITER_DELETED_ERROR(6007, "邀请人已注销，请检查！"),

    /**
     * 表示用户已经被冻结
     */
    USER_FREEZE(6008, "用户已被冻结，请联系管理员！"),

    /**
     * 身份证认证失败
     */
    IDENTITY_AUTHENTICATION_FAILURE(6009, "身份证认证失败，请检查！"),

    /**
     * 用户已认证
     */
    USER_IDENTITY_AUTHENTICATION(6009, "用户已认证，请勿重复认证！"),

    /**
     * 企业已认证
     */
    ENTERPRISE_IDENTITY_AUTHENTICATION(6010, "已认证企业或个人，请勿重复认证！"),

    /**
     * 银行卡为空
     */
    BANK_CARD_EMPTY(6011, "银行卡为空，请检查！"),

    /**
     * 对公信息为空
     */
    BANK_CARD_INFO_EMPTY(6012, "对公信息为空，请检查！"),
    /**
     * 分配用户为空
     */
    ASSIGN_USER_IS_EMPTY(6013, "分配用户为空"),


    /**
     * 导出excel表格异常
     */
    EXPORT_EXCEL_ERROR(6013, "导出excel表格异常，请检查！"),

    /**
     * 用户合同不存在
     */
    USER_CONTRACT_IS_NOT_EXIST(6014,"用户合同不存在"),

    /**
     * 待绑定的设备数量错误
     */
    DEVICE_NUM_ERROR(6015,"待绑定的设备数量错误"),

    /**
     * 未找到设备或数量不足
     */
    DEVICE_NOT_FOUND_OR_QUANTITY_INSUFFICIENT(6016,"未找到设备或数量不足"),
    //------------------ 用户新增分佣时错误信息 7000 ---------------------

    /**
     * 表示操作失败的结果。
     */
    UserCommissionRule_FAILURE(7000, "禁止重复添加分佣人! 请检查！"),

    /**
     * 表示空数据的结果。
     */
    UserCommissionRule_EMPTY_VALUE_ERROR(7001, "分佣规则列表不能为空! 请检查！"),

    /**
     * 表示当前用户信息未找到的结果。
     */
    UserCommissionRule_NO_USERDATA_AVAILABLE(7002, "当前用户信息未找到! "),

    /**
     * 表示当前用户信息未找到的结果。
     */
    UserCommissionRule_NO_DIVIDED_SERVANTS_AVAILABLE(7003, "被分佣人用户信息未找到! "),

    /**
     * 表示系统异常的结果。
     */
    UserCommissionRule_SYSTEM_EXCEPTION(7004, "禁止添加自己为被分佣人! 请检查！"),

    /**
     * 表示不是上级、也不是下级结果。
     */
    UserCommissionRule_ERRO_FAILURE(7005, "禁止添加非上下级关系用户的分佣! 请检查！"),

    /**
     * 该推广码已经被绑定
     */
    PROMOTIONAL_CODE_HAS_USED(7006,"该推广码已经被绑定"),

    /**
     * 已经有自己上司了
     */
    ALREADY_HAVE_MY_OWN_SUPERIOR(7007,"该用户已有上级，禁止重复绑定!"),
    /**
     * 无法绑定自己促销代码
     */
    CANNOT_BIND_OWN_PROMOTIONAL_CODE(7008,"无法成为自己的上级"),
    PROMOTIONAL_CODE_BIND_SUCCESS(7009,"绑定成功"),


//------------------ ai错误信息 8000 ---------------------

    /**
     * ai配置已存在
     */
    AI_CONFIG_IS_EXISTS(8001,"AI配置为空"),
    AI_ROLE_IS_EXISTS(8002,"AI角色为空"),


//------------------ 用户新增分佣时错误信息 9000 ---------------------
    /**
     * 表示 AK SK 不能为空的结果。
     */
    AK_SK_CANNOT_BE_NULL(9001, "AK SK 不能为空！"),
    AK_SK_INVALID(9002, "AK SK 失效，请联系我们！");

    private final Integer code;
    private final String msg;

    /**
     * 构造函数，用于创建一个新的结果枚举。
     *
     * @param code 结果代码
     * @param msg  结果消息
     */
    ResultEnum(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

}
